Better align Emacs window management with Android task lifecycles
authorPo Lu <luangruo@yahoo.com>
Wed, 3 Apr 2024 12:29:10 +0000 (20:29 +0800)
committerPo Lu <luangruo@yahoo.com>
Wed, 3 Apr 2024 12:31:22 +0000 (20:31 +0800)
commit7df66b4762ff51e394b8db03dfffe888bdba0a67
treec576b857afa236b95964cb28988b4aa2c3cabcc6
parentfa9791fe6af2bbedf1f5bb3e7dd8879a0191ebf1
Better align Emacs window management with Android task lifecycles

* java/org/gnu/emacs/EmacsActivity.java (onCreate): Permit
overriding by child classes.
(onDestroy): Minor stylistic adjustments.
(getAttachmentToken): New function.

* java/org/gnu/emacs/EmacsMultitaskActivity.java (onCreate)
(getAttachmentToken): New functions.

* java/org/gnu/emacs/EmacsWindow.java (EmacsWindow):
<attachmentToken, preserve, previouslyAttached>: New variables.
(onActivityDetached): Remove redundant isFinishing argument.
(reparentTo): Reset the foregoing fields before registering with
the window manager.

* java/org/gnu/emacs/EmacsWindowManager.java
(EmacsWindowManager): Rename from EmacsWindowAttachmentManager.
(WindowConsumer): New function getAttachmentToken.
(isWindowEligible): New function.
(registerWindowConsumer, registerWindow, removeWindowConsumer)
(detachWindow): Implement a new window management strategy on
API 29 and subsequent releases where both varieties of toplevel
window are permanently, except when reparented, bound to the
activities to which they attach, and Emacs establishes at
strategic junctures whether those activities remain present.
(getTaskToken, pruneWindows): New functions.
java/org/gnu/emacs/EmacsActivity.java
java/org/gnu/emacs/EmacsMultitaskActivity.java
java/org/gnu/emacs/EmacsService.java
java/org/gnu/emacs/EmacsView.java
java/org/gnu/emacs/EmacsWindow.java
java/org/gnu/emacs/EmacsWindowAttachmentManager.java [deleted file]
java/org/gnu/emacs/EmacsWindowManager.java [new file with mode: 0644]